Modern web applications may display highly dynamic content. The content may be accessed via a variety of different browsers and platforms, including mobile devices. Furthermore, the content may evolve frequently in response to changing requirements, customer dynamics, and competitive pressures. As such, these factors may increase robustness requirements on web applications. Therefore, manual testing may be impractical and automated testing may be essential considering the short turn around time for upgrades and the plethora of browsers on which an application must be tested. However, these factors may also make automated testing difficult. For example, a test script automated on an application may easily break if the dynamic content of a page changes. Similarly, a script automated on one web browser may break when executed on a different browser or even a different browser version due to subtle differences in the browsers' Document Object Model (DOM) representations or page-rendering algorithms. The Document Object Model (DOM) is an application programming interface (API) for valid HTML and well-formed XML documents. The DOM defines the logical structure of documents and the way a document is accessed and manipulated.
Currently, web testing tools attempt to address the problems regarding automated testing. Some tools, rely on image-processing which makes the testing tools independent of DOM representations and, therefore, tolerant to variations in the representations. However, such tools may be ineffective when cross-browser differences result in different visual rendering of a web page. Additionally, such tools may not recognize that there is no functional change in the application when there is a simple change in the position of the elements of interest. Furthermore, some web testing tools rely on internal attributes and metadata, such as IDs of user interface elements that often change due to the dynamism of applications.